--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Commit 6fb0efbd896573b6bb2b1a37d5c788c832f4281a
Parents : 6327e16
Author : Ivan <ivan@quad4.io>
Signature : Signature validation error
Date : 2026-05-18T05:09:24-05:00
chore(build): add offline build support and remove legacy build tasks
Changes
3 files changed, 31 insertions(+), 39 deletions(-)
Diff
diff --git a/.gitignore b/.gitignore
index 2dc802f5..334c3d3f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,6 +8,7 @@
# Dependencies
node_modules/
.pnpm-store/
+vendor/offline/
# Python
__pycache__/
diff --git a/Makefile b/Makefile
index 94326269..7b1c8f3b 100644
--- a/Makefile
+++ b/Makefile
@@ -1,13 +1,35 @@
-.PHONY: install run dev dev-fe build lint test test-be-perf clean help dist-linux dist-linux-x64
+.PHONY: install install-offline run dev dev-fe build lint test test-be-perf clean help dist-linux dist-linux-x64
+
+# Auto-detect offline bundle and configure caches
+OFFLINE_BUNDLE := $(shell find vendor/offline -maxdepth 1 -type d -name 'meshchatx-offline-bundle-*' 2>/dev/null | head -n 1)
+
+ifeq ($(MESHCHATX_OFFLINE_BUILD),1)
+ ifneq ($(OFFLINE_BUNDLE),)
+ export UV_CACHE_DIR := $(abspath $(OFFLINE_BUNDLE)/uv-cache)
+ export ELECTRON_BUILDER_CACHE := $(abspath $(OFFLINE_BUNDLE)/electron-builder-cache)
+ endif
+endif
install:
+ifeq ($(MESHCHATX_OFFLINE_BUILD),1)
+ @if [ ! -d "node_modules" ]; then \
+ echo "Error: node_modules not found for offline build." >&2; \
+ echo "Run: bash scripts/install-offline.sh" >&2; \
+ exit 1; \
+ fi
+ @echo "Offline build: skipping pnpm install (node_modules present)"
+else
pnpm install
- poetry install
- poetry run python scripts/patch_lxst_pyogg_ogg_ctypes.py
+endif
+ uv sync --group dev $(if $(filter 1,$(MESHCHATX_OFFLINE_BUILD)),--offline)
+ uv run python scripts/patch_lxst_pyogg_ogg_ctypes.py
+
+install-offline:
+ bash scripts/install-offline.sh
# Python backend only. For HMR, use: make dev OR make run in one terminal and pnpm run dev in another.
run:
- poetry run python -m meshchatx.meshchat
+ uv run python -m meshchatx.meshchat
# Vite dev server (live reload) + backend. Open http://localhost:5173 — proxies /api and /ws to MESHCHAT_PORT (default 8000).
dev:
@@ -36,15 +58,15 @@ help:
lint:
pnpm run lint
- poetry run ruff check .
- poetry run ruff format --check .
+ uv run ruff check .
+ uv run ruff format --check .
test:
pnpm run test
- poetry run python -m pytest tests/backend -n auto --cov=meshchatx/src/backend
+ uv run pytest tests/backend -n auto --cov=meshchatx/src/backend
test-be-perf:
- poetry run python -m pytest tests/backend/test_performance_hotpaths.py tests/backend/test_performance_bottlenecks.py
+ uv run pytest tests/backend/test_performance_hotpaths.py tests/backend/test_performance_bottlenecks.py
clean:
rm -rf node_modules build dist python-dist meshchatx/public build-dir out
diff --git a/Taskfile.yml b/Taskfile.yml
index 64bd39e4..8c4c5715 100644
--- a/Taskfile.yml
+++ b/Taskfile.yml
@@ -396,37 +396,6 @@ tasks:
- "PLATFORM=win32 PYTHON_CMD='{{.WINE_PYTHON}}' {{.NPM}} run build-backend"
- "npx electron-builder --linux AppImage deb --win portable nsis --publish=never"
- # --- Legacy Electron Builds ---
-
- dist:legacy:linux:
- desc: Build Linux AppImage (Legacy Electron)
- deps: [build:fe]
- cmds:
- - "PLATFORM=linux {{.NPM}} run build-backend"
- - "npx electron-builder -c electron/package-legacy.json --linux AppImage --publish=never"
-
- dist:legacy:win:
- desc: Build Windows EXE (Legacy Electron)
- deps: [build:fe]
- cmds:
- - "PLATFORM=win32 {{.NPM}} run build-backend"
- - "npx electron-builder -c electron/package-legacy.json --win portable --publish=never"
-
- dist:legacy:win:wine:
- desc: Build Windows EXE via Wine (Legacy Electron)
- deps: [build:fe]
- cmds:
- - "PLATFORM=win32 PYTHON_CMD='{{.WINE_PYTHON}}' {{.NPM}} run build-backend"
- - "npx electron-builder -c electron/package-legacy.json --win portable nsis --publish=never"
-
- dist:legacy:all:
- desc: Build all Legacy apps
- deps: [build:fe]
- cmds:
- - "PLATFORM=linux {{.NPM}} run build-backend"
- - "PLATFORM=win32 {{.NPM}} run build-backend"
- - "npx electron-builder -c electron/package-legacy.json --linux AppImage deb --win portable nsis --publish=never"
-
# --- Docker ---
docker:build:
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────